Streaming media is multimedia that is being constantly delivered from a content provider at the same time it is played or viewed by the end user. The media content is divided into chunks called fragments, which are packaged in media files. Each media file may contain one or more fragments. The media files are “streamed” to the client as the media is played back by the client.
Adaptive bitrate streaming is a technique used in streaming multimedia over communication networks for dynamically adjusting the quality of the media stream depending on available resources, such as available bandwidth and processing capacity. When adaptive bitrate streaming is used, media content may be encoded in different resolutions and/or bitrates. A client's bandwidth and processing capacity is detected in real time and the quality of the media stream is adjusted accordingly by switching between different encoded versions of the same media content.
When adaptive bitrate streamlining is used, a content manifest is provided to describe the different encoded versions of the media content and the location of the media files. The location of files may be specified by a uniform resource locator (URL), which may be an absolute URL or relative URL. An absolute URL provides a full path to the requested file. A relative URL (defined in Internet Engineering Task Force (IETF) standard RFC 1808) specifies a partial path relative to the location of a current file, usually on the same machine. To provide a complete path, the relative URL is combined with a base URL that specifies the protocol and machine. A client requests the manifest file from a server to get location information and metadata about the media files. In the case where live content is streamed using Hypertext Transfer Protocol (HTTP) Dynamic Streaming (HDS), for example, a bootstrap file is then requested. The bootstrap file contains the bootstrap information needed to begin playback of the media. The bootstrap file may also contain one or more media fragments. As the media content is played back, the client requests additional media files.
Most adaptive streaming technologies are based on the Hypertext Transfer Protocol (HTTP) and are designed to work efficiently over large distributed content delivery networks (CDNs). A CDN comprises a system of servers or delivery nodes distributed across the Internet for efficiently delivering media content to content consumers. A CDN operator is typically paid by content providers (CPs) to deliver media content of the content providers to content consumers. The content providers maintain control over the media content while delivery of the media content is handled by the CDN. In the scenario where the content provider uses a CDN to deliver its content to its content consumers, requests for media content are directed to delivery node that can efficiently deliver the content to the content consumer. From the perspective of the content consumer, the request is directed to the content provider's network.
Redirection is the mechanism used by CDNs to re-route requests for content to a particular delivery node within the CDN that is able to deliver the content. The main existing redirection mechanisms in CDNs using the HTTP are Simple HTTP redirection, HTTP redirection with manifest rewrite, and Dynamic Name Server (DNS) Redirection. A problem arises when HTTP redirection methods are used with HDS where the content includes relative uniform resource locators (URLs). With HTTP redirection, a request router in the user's access network receives a request for a content manifest from a media playback device of a content consumer and temporarily redirects the request for the content manifest to a load balancing node in the CDN. The load balancing node, in turn, redirects the HTTP request to a delivery node that will deliver the content based on information carried in HTTP request. The media playback device fetches the content manifest from the delivery node. When temporary redirection is used, the media playback device will direct future requests for media content to the load balancing node rather than the delivery node and each request will be redirected to the delivery node. This approach results in a large number of redirections.
One solution for solving the redirection issue and reducing the number of redirection requests is manifest re-writing. In this case, a content manifest having a relative URL is re-written to provide an absolute URL. The request router receives a request for a content manifest from a media playback device. Rather than re-direct the media playback device, the request router determines the delivery node and fetches the content manifest with a relative URL from the delivery node. The request router then modifies the relative URL in the manifest file to provide an absolute URL and sends the modified content manifest to the media playback device. The media playback device may then fetch the content files (e.g. bootstrap file and content fragments) directly from the serving edge node. However, some content providers object to revision of the content provider's manifest files.
An alternative solution for solving the redirection issue is to use DNS based redirection rather than HTTP redirection. However, there are drawbacks to using DNS based redirection, and some content providers may prefer a solution based on HTTP redirection.